Listin Gambas2
Création d'un programme en Gambas2 : un répertoire téléphonique pas à pas
Origine : http://listingambas.blogspot.com/2011/06/modulo-archivo-leer.htmlModule Fichier : Lire
Nous lisons nos données .... notre
agenda
est
presque
fonctionnel
C'est bien. Une fois que nous avons sauvées nos données, il
nous
faut les lire. Comme toujours, et pour être organisés, nous allons dans le module "Fichier" et créons la sous-routine suivante :
PUBLIC SUB ouvrir(OPTIONAL racine AS String)
DIM a AS Integer 'compteur de groupe de données
DIM b AS Integer 'compteur de données
DIM arr_chaine AS String[]
DIM codefinligne AS String
DIM numero_de_donnee AS Integer
codefinligne = "|"
IF racine = "" THEN
Dialog.Title = "Selectionner un fichier de données listin"
Dialog.Filter = ["*.lis", "Données de Listin"]
IF NOT Dialog.OpenFile() THEN
racine = Dialog.Path
ELSE
RETURN
ENDIF
ENDIF
arr_chaine = Split(File.Load(racine), codefinligne)
IF arr_chaine [ 0 ] <> "v0 .0.1 " THEN
'redimensionnement des données ....
var.id.Resize(numero_de_donnee)
var.dni.Resize(numero_de_donnee)
var.nom.Resize(numero_de_donnee)
var.prenoms.Resize(numero_de_donnee)
var.entreprise.Resize(numero_de_donnee)
var.poste.Resize(numero_de_donnee)
var.tel_entreprise.Resize(numero_de_donnee)
var.tel_perso.Resize(numero_de_donnee)
var.fax.Resize(numero_de_donnee)
var.mobile_entreprise.Resize(numero_de_donnee)
var.mobile_perso.Resize(numero_de_donnee)
var.page.Resize(numero_de_donnee)
var.photo.Resize(numero_de_donnee)
var.adresse.Resize(numero_de_donnee)
var.commentaires.Resize(numero_de_donnee)
var.date_donnees.Resize(numero_de_donnee)
var.mail.Resize(numero_de_donnee)
'On lit les données
FOR a = 0 TO numero_de_donnee - 1
b += 1
var.id[a] = arr_chaine [b]
b += 1
var.dni[a] = arr_chaine [b]
b += 1
var.nom[a] = arr_chaine [b]
b += 1
var.prenoms[a] = arr_chaine [b]
b += 1
var.entreprise[a] = arr_chaine [b]
b += 1
var.poste[a] = arr_chaine [b]
b += 1
var.tel_entreprise[a] = arr_chaine [b]
b += 1
var.tel_perso[a] = arr_chaine [b]
b += 1
var.fax[a] = arr_chaine [b]
b += 1
var.mobile_entreprise[a] = arr_chaine [b]
b += 1
var.mobile_perso[a] = arr_chaine [b]
b += 1
var.page[a] = arr_chaine [b]
b += 1
var.photo[a] = arr_chaine [b]
b += 1
var.adresse[a] = arr_chaine [b]
b += 1
var.commentaires[a] = arr_chaine [b]
b += 1
var.date_donnees[a] = arr_chaine [b]
b += 1
var.mail[a] = arr_chaine [b]
NEXT
var.change = "NON"
titre.remplir()
FMain.LabelActual.text = racine
AjoutRecent.add(racine)
finlecture:
END
DIM a AS Integer 'compteur de groupe de données
DIM b AS Integer 'compteur de données
DIM arr_chaine AS String[]
DIM codefinligne AS String
DIM numero_de_donnee AS Integer
codefinligne = "|"
IF racine = "" THEN
Dialog.Title = "Selectionner un fichier de données listin"
Dialog.Filter = ["*.lis", "Données de Listin"]
IF NOT Dialog.OpenFile() THEN
racine = Dialog.Path
ELSE
RETURN
ENDIF
ENDIF
arr_chaine = Split(File.Load(racine), codefinligne)
IF arr_chaine [ 0 ] <> "v0 .0.1 " THEN
''version
incompatible
avec
la
version de ce programme, abandon de la procédure
Message. Error
(" Erreur
: version des données
incompatible")
goto
finlecture
endif
numero_de_donnee
=
arr_chaine
[ 2
] 'le tableau arr_cchaine[1] contient le
programme que l'on a fait
b
=
2
'redimensionnement des données ....
var.id.Resize(numero_de_donnee)
var.dni.Resize(numero_de_donnee)
var.nom.Resize(numero_de_donnee)
var.prenoms.Resize(numero_de_donnee)
var.entreprise.Resize(numero_de_donnee)
var.poste.Resize(numero_de_donnee)
var.tel_entreprise.Resize(numero_de_donnee)
var.tel_perso.Resize(numero_de_donnee)
var.fax.Resize(numero_de_donnee)
var.mobile_entreprise.Resize(numero_de_donnee)
var.mobile_perso.Resize(numero_de_donnee)
var.page.Resize(numero_de_donnee)
var.photo.Resize(numero_de_donnee)
var.adresse.Resize(numero_de_donnee)
var.commentaires.Resize(numero_de_donnee)
var.date_donnees.Resize(numero_de_donnee)
var.mail.Resize(numero_de_donnee)
'On lit les données
FOR a = 0 TO numero_de_donnee - 1
b += 1
var.id[a] = arr_chaine [b]
b += 1
var.dni[a] = arr_chaine [b]
b += 1
var.nom[a] = arr_chaine [b]
b += 1
var.prenoms[a] = arr_chaine [b]
b += 1
var.entreprise[a] = arr_chaine [b]
b += 1
var.poste[a] = arr_chaine [b]
b += 1
var.tel_entreprise[a] = arr_chaine [b]
b += 1
var.tel_perso[a] = arr_chaine [b]
b += 1
var.fax[a] = arr_chaine [b]
b += 1
var.mobile_entreprise[a] = arr_chaine [b]
b += 1
var.mobile_perso[a] = arr_chaine [b]
b += 1
var.page[a] = arr_chaine [b]
b += 1
var.photo[a] = arr_chaine [b]
b += 1
var.adresse[a] = arr_chaine [b]
b += 1
var.commentaires[a] = arr_chaine [b]
b += 1
var.date_donnees[a] = arr_chaine [b]
b += 1
var.mail[a] = arr_chaine [b]
NEXT
var.change = "NON"
titre.remplir()
FMain.LabelActual.text = racine
AjoutRecent.add(racine)
finlecture:
END
Commande
Split (f![]() Elle permet de créer un tableau à partir d'une chaîne ou d'un fichier (file.load (Dialog.Path)) lorsque les éléments sont séparés par un caractère (dans notre cas le "codefinligne") |
Enfin, dans le formulaire FMAIN, nous ajoutons le code suivant pour prendre en compte un click dans le Menu Fivhier/Ouvrir
PUBLIC SUB Ouvrir_Click()
Fichier.ouvrir()
END